package com.company.site.user;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.company.site.mode.wechatuser.Sms;
import com.company.site.mode.wechatuser.WechatUser;

@Repository
public interface UserMapper {

	/**
	 * 用户登录
	 * @param user
	 * @return
	 */
	public WechatUser	userLogin(WechatUser wechatUser);
	
	/**
	 * 用户注册
	 * @param user
	 * @return
	 */
	public void userRegiste(WechatUser wechatUser);
	
	
	/**
	 * 根据用户id获取用户信息
	 * @param id
	 * @return 
	 */
	public WechatUser getUserInfoById(Long id);
	
	/**
	 * 根据用户Username获取用户信息
	 * @param Username
	 * @return 
	 */
	public WechatUser getUserInfoByUsername(String username);
	
	
	/**
	 * 根据用户Id取得参与活动的所有时间(审核通过的活动)
	 * @param id
	 * @return
	 */
	public long getPersonTime(long id);
	
	/**
	 * 修改密码
	 * @param user
	 */
	public void modifyPwd(WechatUser wechatUser);
	
	/**
	 * 更新用户基本资料信息：年龄 性别 身份证 家庭住址
	 * @param user
	 */
	public void updateUserInfo(WechatUser wechatUser);


	// 判断手机是否已注册
	public Long getMobileInfo(String mobile);
	
	// 当前手机发送的验证码次数
	public long getMobileCount(@Param(value = "mobile") String mobile);

	// 将发送验证码的数据保存到数据库
	public void sendCode(Sms sms);

	// 验证码正确性及时效性
	public long checkNum(@Param(value = "mobile") String mobile, @Param(value = "checknum") String checknum);

	// 根据手机号码更新密码
	public void changePassword(WechatUser wechatUser);

	// 根据组织Id找到组织名称
	public String getOrganization(@Param(value = "id") Long id);
	
	
	/**
	 * 添加微信用户
	 * @param user
	 */
	public void addUser(WechatUser user);
	
	/**
	 * 更新用户微信信息
	 * @param user
	 */
	public void updateUserWechatInfo(WechatUser user);
	
	/**
	 * 根据微信用户openid获取用户信息
	 * @param openid
	 * @return
	 */
	public  WechatUser getUserInfoByOpenid(String openid);
	


	// 根据openId更新wechatUser
	public void updateWechatuserByOpenid(WechatUser wechatUser);
	// 根据userName更新wechatUser
	public void updateWechatuserByUsername(WechatUser wechatUser);
	// 根据openId删除wechatUser
	public void deleteWechatuserByOpenid(WechatUser wechatUser);

	public void addWechatUser(WechatUser wechatUser);

	public void updateVoteWechatuser(WechatUser wechatUser);

}
